import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int[] a=new int[n];
        int[] hash=new int[100001];
        int count=0;
        for(int i=0;i<n;i++){
            a[i]=in.nextInt();
        }
        Arrays.sort(a);
        for(int i=0;i<n;i++){
            hash[a[i]]++;
        }
        for(int x:hash){
            if(x!=0) count++;
        }
        if(count<=m){
            int res=func(hash,count,m);
            System.out.println(res);
        }else{
            System.out.println(-1);
        }
    }
    public static int func(int[] hash,int count,int m){
        int num=m-count;
        int cnt=0;
        Arrays.sort(hash);
        PriorityQueue<Integer> h=new PriorityQueue<>((a,b)->{
            return b-a;
        });
        for(int i=hash.length-1;hash[i]!=0;i--) {
            h.add(hash[i]);
        }
        while(cnt<num) {
            int x = h.poll() / 2;
            h.add(x);
            h.add(x);
            cnt++;
        }
        return h.peek();
    }

    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        int t=in.nextInt();
        int cnt=0;
        while(cnt<t){
            int n=in.nextInt();
            String[] s=new String[n];
            for(int i=0;i<n;i++){
                s[i]=in.next();
            }
            int left=0,right=n-1;
            boolean flg1=true;
            while(left<right){
                boolean flg=false;
                Set<Character> set=new HashSet<>();
                for(int i=0;i<s[left].length();i++){
                    set.add(s[left].charAt(i));
                }
                for(int i=0;i<s[right].length();i++){
                    if(set.contains(s[right].charAt(i))){
                        flg=true;
                        break;
                    }
                }
                if(!flg){
                    flg1=false;
                    break;
                }
                left++;
                right--;
            }
            if(flg1){
                System.out.println("Yes");
            }else{
                System.out.println("No");
            }
            cnt++;
        }
    }
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        long x=in.nextLong();
        long[] a=new long[n];
        for(int i=0;i<n;i++){
            a[i]=in.nextLong();
            if(x>=a[i]){
                x+=a[i];
            }else{
                x+=gcd(x,a[i]);
            }
        }
        System.out.println(x);
    }
    public static long gcd(long x,long a){
        long t=0;
        while(a!=0){
            t=a;
            a=x%a;
            x=t;
        }
        return x;
    }
}